home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
301-325
/
disk_315
/
surf
/
mouse.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
3KB
|
152 lines
#include "scrnio.ih"
#ifdef MANX
#include <functions.h>
#endif
#include "scrnio.h"
#include "mytypes.h"
#include "bezpt.h"
#include "control.h"
static bool buttondown; /* is left button down */
static short mousex, mousey;
static enum BezPtEnum selbezpt; /* selected bez pt */
void HandleTicks(mesg)
struct IntuiMessage *mesg;
{
int x, y;
x = CntrX(mesg->MouseX);
y = CntrY(mesg->MouseY);
if(!buttondown || (mousex == x && mousey == y )){
return;
}
mousex = x;
mousey = y;
switch( CurMode ) {
case DRAWPOLY:
EditBezPt( mousex, mousey);
break;
case FITBEZIER:
switch(selbezpt) {
case BPEStartPt:
EditStartPt(mousex, mousey);
break;
case BPEEndPt:
EditEndPt(mousex, mousey);
break;
case BPECntrlPt1:
EditControl0(mousex, mousey);
break;
case BPECntrlPt2:
EditControl1(mousex, mousey);
break;
}
break;
default:
break;
}
}
void HandleMButtons(mesg)
struct IntuiMessage *mesg;
{
long startdist, enddist, leftdist, rightdist;
long tx, ty;
mousex = CntrX(mesg->MouseX);
mousey = CntrY(mesg->MouseY);
switch( mesg->Code) {
case SELECTDOWN:
buttondown = true; /* down */
switch( CurMode ) {
case DRAWPOLY:
InitBezPt( mousex, mousey);
if( GetNumSegs() == 0 ) {
InitBezPt( mousex, mousey );
}
break;
case FITBEZIER:
tx = mousex - StartPtX(GetCurSeg());
ty = mousey - StartPtY(GetCurSeg());
startdist = tx * tx + ty * ty;
tx = mousex - EndPtX(GetCurSeg());
ty = mousey - EndPtY(GetCurSeg());
enddist = tx * tx + ty * ty;
tx = mousex - Cntrl1X(GetCurSeg());
ty = mousey - Cntrl1Y(GetCurSeg());
leftdist = tx * tx + ty * ty;
tx = mousex - Cntrl2X(GetCurSeg());
ty = mousey - Cntrl2Y(GetCurSeg());
rightdist = tx *tx + ty * ty;
if( leftdist <= rightdist &&
leftdist <= startdist &&
leftdist <= enddist ) {
selbezpt = BPECntrlPt1;
EditControl0( mousex, mousey );
}
else if ( rightdist <= startdist &&
rightdist <= enddist ) {
selbezpt = BPECntrlPt2;
EditControl1( mousex, mousey );
}
else if ( startdist <= enddist ) {
selbezpt = BPEStartPt;
EditStartPt(mousex, mousey);
}
else {
selbezpt = BPEEndPt;
EditEndPt(mousex, mousey);
}
break;
default:
break;
}
break;
case SELECTUP:
buttondown = false; /* up */
break;
case MENUUP:
if( CurMode == FITBEZIER ) {
DrawStartPt();
DrawEndPt();
DrawControl0();
DrawControl1();
NextSeg();
DrawStartPt();
DrawEndPt();
DrawControl0();
DrawControl1();
}
break;
default:
break;
}
}